home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-20
/
caty16.zip
/
CATYTERM.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-02-02
|
8KB
|
163 lines
UNIT CATYTERM; (* Interrupt driven Serial Terminal - D. J. Wilke 1/12/91 *)
INTERFACE
USES CRT, DOS, CATYGLO, CATYUTIL, CATYDISP, CATYCOMM, CATYMVFO;
PROCEDURE DumbTerm;
IMPLEMENTATION
USES CATYINST; (* Prevents circ reference *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE DumbTerm; (* Split screen communications terminal for packet *)
VAR
Quit : BOOLEAN; (* Flag for exiting *)
KeyChar : CHAR; (* Char from the keyboard *)
TNCChar : CHAR; (* Char from the TNC port *)
NoShow : SET OF CHAR; (* Don't show characters set *)
RX,RY,
TX,TY : BYTE;
BEGIN
RX := 1; RY := 1; TX := 1; TY := 1; (* Initialize cursor vars *)
NoShow := [#0,#127]; (* Don't display NUL, RUBOUT *)
Quit := FALSE; (* Exit when Quit goes TRUE *)
CLRSCR;
WINDOW(1,1,80,5);
PrMessage(' - Terminal Node Controller Screen - ',4);
PromptLine('T'); (* Put up Terminal prompt *)
PrLines('H',2,79,18,0,SBA,DBG,196);
ScreenWrite(' '+CHR(24)+' Receive '+CHR(4)+
' Transmit '+CHR(25)+' ',30,18,PFG);
WINDOW(3,6,78,17); CLRSCR; (* Clear RCV window *)
WINDOW(3,19,78,22); CLRSCR; (* Clear XMIT window *)
TurnCatOn;
CatSend(Check,86); (* Get new parameters *)
QuickStat;
TurnCatOff; (* Update panel *)
REPEAT (* Loop `til Quit *)
WINDOW(3,6,78,17);
GOTOXY(RX,RY);
TEXTCOLOR(TRFG); TEXTBACKGROUND(DBG); (* Terminal RCV colors *)
IF TInStat THEN BEGIN (* If char comes from TNC *)
TNCChar := TInChar; (* Go get character *)
TNCChar := Char(Byte(TNCChar) AND $7F); (* Mask off high bit *)
IF NOT (TNCChar IN NoShow) THEN (* If we can show it, *)
WRITE(TNCChar); (* ...then show it *)
END;
RX := WhereX; RY := WhereY; (* Save cursor pos *)
IF KeyPressed THEN BEGIN (* If char from the kbd *)
WINDOW(3,19,78,22);
TEXTCOLOR(TTFG); TEXTBACKGROUND(DBG); (* Terminal xmit colors *)
KeyChar := ReadKey; (* First, read the keystroke *)
IF KeyChar = CHR(0) THEN BEGIN (* Extended scan code *)
KeyChar := ReadKey; (* Second half of ext code *)
GOTOXY(1,TY);
CASE ORD(KeyChar) OF
59 : BEGIN
WRITELN('Help...');
SendTString('H'); (* F1 = Display help screen *)
TY := WhereY; (* Save cursor pos *)
END;
60 : BEGIN
WRITELN('Display TNC parameters...');
SendTString('DISP Z'); (* F2 = Display parameters *)
TY := WhereY; (* Save cursor pos *)
END;
61 : BEGIN
WRITELN('Monitor mode = ALL');
SendTString('M 6'); (* F3 = Monitor mode 6 *)
TY := WhereY; (* Save cursor pos *)
END;
62 : BEGIN
WRITELN('Start BAUDOT mode');
WRITELN('RTTY Baud rate = 45');
WRITELN('Wide Shift = OFF');
SendTString('BA'); (* F4 = Baudot *)
SendTString('RB 45');
SendTString('WI OFF');
TY := WhereY; (* Save cursor pos *)
END;
63 : BEGIN
WRITELN('Stations Heard:');
SendTString('MH'); (* F5 = MHeard *)
TY := WhereY; (* Save cursor pos *)
END;
64 : BEGIN
WRITELN('Start PACKET mode');
WRITELN('Set VHF OFF');
WRITELN('Set baud to 300');
SendTString('PA'); (* F6 = HF Packet *)
SendTString('V OFF');
SendTString('HB 300'); (* 300 baud *)
TY := WhereY; (* Save cursor pos *)
END;
65 : BEGIN
WRITELN('Start PACKET mode');
WRITELN('Set VHF ON');
WRITELN('Set baud to 1200');
SendTString('PA'); (* F7 = VHF Packet *)
SendTString('V ON');
SendTString('HB 1200'); (* 1200 baud *)
TY := WhereY; (* Save cursor pos *)
END;
66 : BEGIN
WRITELN('Disconnect.');
SendTString(CHR(3)+'D'); (* F8 = Disconnect *)
TY := WhereY; (* Save cursor pos *)
END;
67 : BEGIN
WRITELN('Start AMTOR mode...');
SendTString('AL'); (* F9 = AMTOR Listen mode *)
TY := WhereY; (* Save cursor pos *)
END;
68 : BEGIN
WRITELN('Channel STATUS:');
SendTString('CS'); (* F10 = Channel Status *)
TY := WhereY; (* Save cursor pos *)
END;
71 : BEGIN (* <Home> = Clears screen *)
WINDOW(3,6,78,17);
CLRSCR;
END;
73 : BEGIN
WRITELN('CONVERSE mode...');
SendTString('CONV'); (* <Page Up> = Converse mode *)
END;
79 : Quit := True; (* <End> = Exit to Main Menu *)
81 : BEGIN
WRITELN('COMMAND mode...');
SendTString(CHR(3)); (* <Page Down> = CMD mode *)
END;
END; (* CASE *)
END (* IF KeyChar *)
ELSE BEGIN (* Not extended, show char *)
GOTOXY(TX,TY);
OutChar(KeyChar,TComBase);
IF NOT (KeyChar IN NoShow) THEN
WRITE(KeyChar); (* Then show it *)
IF KeyChar = CHR(13) THEN
WRITE(CHR(13),CHR(10)); (* Bump the line *)
END; (* ELSE *)
TX := WhereX; TY := WhereY; (* Save cursor pos *)
END; (* IF KeyPressed *)
UNTIL Quit;
FOR Index := 1 TO 80 DO BEGIN (* Clean up behind us *)
ScreenWrite(' ',Index,23,0);
ScreenWrite(CHR(205),Index,24,SBA); (* Put back line *)
END;
WINDOW(2,6,79,23);
ScreenWrite(CHR(186),1,23,SBA); (* Put back corners *)
ScreenWrite(CHR(186),80,23,SBA);
ScreenWrite(CHR(200),1,24,SBA);
ScreenWrite(CHR(188),80,24,SBA);
TEXTCOLOR(DFG);
TEXTBACKGROUND(DBG); (* Default screen colors *)
MainMenu;
END; (* DumbTerm *)
END. (* UNIT CATYTERM *)